package com.itheima.d4_enum;

/**
 * 枚举的常见应用场景：
 * 用来表示一组信息，然后作为参数进行传输。
 * 选择定义一个一个的常量来表示一组信息，并作为参数传输
 * 参数值不受约束。
 * 选择定义枚举表示一组信息，并作为参数传输
 * 代码可读性好，参数值得到了约束，对使用者更友好，建议使用!
 *
 *常量可以很方便的定义不同类型，public static final int BOY = 0;除了int，还可以char或者string等等
 * 这样方便业务操作
 */
public class Test2 {
    public static void main(String[] args) {
        //使用常量包里面的常量
        check(Constant.GIRL);
        check(Constant.BOY);
        //check(21);  入参不做约束，什么数字都可以填，枚举就是为了解决以上问题

        System.out.println("==========");

        // 目标：掌握枚举类的使用场景。
        check1(Constant1.BOY);
        check1(Constant1.GIRL);
    }



    public static void check1(Constant1 sex){
        switch (sex) {
            case BOY:
                // 男生
                System.out.println("展示了一些信息给男生观看~~~");
                System.out.println("不断地工作和不断地求职，使我丧失了思考的能力！无解!");
                break;
            case GIRL:
                // 女生
                System.out.println("展示了一些信息给女生观看~~~");
                break;
        }
    }

    /**
     * 采用常量代替数字作为Switch的判断，会更有可读性
     * 但是用常量做入参，会没有约束
     * 枚举就是为了解决以上问题
     * @param sex
     */
    public static void check(int sex){
        switch (sex) {
            case Constant.BOY:  //就算是使用常量之后，也可以填0或1来判断，因为Constant.BOY也是int类型的，只不过Constant.BOY更有可读性
                // 男生
                System.out.println("展示了一些信息给男生观看~~~");
                System.out.println("不断地工作和不断地求职，使我丧失了思考的能力！无解!");
                break;
            case Constant.GIRL:
                // 女生
                System.out.println("展示了一些信息给女生观看~~~");
                break;
        }
    }

}
